***********************************************************************************
***	Replication file for:                                                     	***
*** Braun, S. T. and Stuhler, J. (2024). The Economic Consequences of 			***
***	Being Widowed by War: A Life-Cycle Perspective.	     						***
***																				***
***	Journal of Public Economics                                                 ***
***   							                                                ***
*** Script:		_11c-ghs-2-prep-cross-section-ATA.do			   			 	***	
*** Purpose:	data preparation, cross-sectional data GHS-2, combines			***
***				surveys A and TA												***
***																				***
***********************************************************************************


/*
Generation index

1001 "Leiblicher Vater der Indexperson (Großvater)"
1002 "Leibliche Mutter der Indexperson (Großmutter)"
1003 "Stief-/Pflegevater der Indexperson (Großvater)"
1004 "Stief-/Pflegemutter der Indexperson (Großmutter)"

2001 "Indexperson"

2002 "Ehepartner 1 der Indexperson"
2003 "Ehepartner 2 der Indexperson"
2004 "Ehepartner 3 der Indexperson"
*/

/*
1001 "Biological father of index person (grandfather)"
1002 "Biological mother of index person (grandmother)"
1003 "Stepfather/foster father of the index person (grandfather)"
1004 "Stepmother/foster mother of the index person (grandmother)"

2001 "Index person"

2002 "Spouse 1 of the index person"
2003 "Spouse 2 of the index person"
2004 "Spouse 3 of the index person"
*/

* Append data from LVS2A/LVS2TA
use "$widowsghs/processed/intermediate/LV2A_CS_combined.dta", clear
append using  "$widowsghs/processed/intermediate/LV2TA_CS_combined.dta"

* Reocode variables including dates
recode geburtsjahr 0 = .
replace heiratsjahr = heiratsjahr + 1900
replace trennungsjahr = trennungsjahr + 1900
replace scheidungsjahr = scheidungsjahr + 1900

drop trennungsjahr_gen

* Fill sex of grandparents, spouses
recode geschlecht . = 1 if index == 1001 | index == 1003
recode geschlecht . = 2 if index == 1002 | index == 1004

gen help = geschlecht if index == 2001
bysort fid: egen help2 = mean(help)
replace geschlecht = 1 if help2 == 2 & index >= 2002 & index <= 2006
replace geschlecht = 2 if help2 == 1 & index >= 2002 & index <= 2006
drop help help2


**********************************
* Years of schooling, education
**********************************

* Schooling (without university degree)
gen 	schuljahre_o_uni = .
replace schuljahre_o_uni = 8 if (schulabschluss >= 1 & schulabschluss <= 3) | schulabschluss == 7
replace schuljahre_o_uni = 10 if schulabschluss == 4
replace schuljahre_o_uni = 12 if schulabschluss == 5
replace schuljahre_o_uni = 13 if schulabschluss == 6
label var schuljahre_o_uni "School years (without university)"

* Schooling (with university degree)
* Missing for persons without information on years of training or still in training

gen 	schuljahre_m_uni = . if berufsausbildung != .
replace schuljahre_m_uni = 8 if (schulabschluss >= 1 & schulabschluss <= 3) | schulabschluss == 7
replace schuljahre_m_uni = 10 if schulabschluss == 4
replace schuljahre_m_uni = 12 if schulabschluss == 5
replace schuljahre_m_uni = 13 if schulabschluss == 6
replace schuljahre_m_uni = schuljahre_m_uni + 4 if berufsausbildung == 7
replace schuljahre_m_uni = schuljahre_m_uni + 5 if berufsausbildung == 8
label var schuljahre_m_uni "School years (with university)"

* Education
* Here: Count other training qualifications in the public sector as 2-year qualifications (vocational training == 0)
* Missing for persons without information on years of training or still in training

gen 	ausbildungsjahre = schuljahre_o_uni if berufsausbildung != .
replace ausbildungsjahre = ausbildungsjahre + 2 if (berufsausbildung == 0 | berufsausbildung == 1 | berufsausbildung == 3 | berufsausbildung == 4)
replace ausbildungsjahre = ausbildungsjahre + 3 if (berufsausbildung == 2)
replace ausbildungsjahre = ausbildungsjahre + 4 if (berufsausbildung == 6)
replace ausbildungsjahre = ausbildungsjahre + 4 if (berufsausbildung == 7)
replace ausbildungsjahre = ausbildungsjahre + 5 if (berufsausbildung == 8)
label var ausbildungsjahre "Years of education (including vocational training and university)"


**********************************
* Occupational prestige
* Father: Recoding, maximal value
**********************************

* Code Prestige as missing if occupation is missing, still in training or retired/pensioner
foreach t in erlernt ip15j vip15j vRuhe {
replace beruf_`t'_prestige_tr = . if (beruf_`t' == .k | beruf_`t' == .w | beruf_`t' == . | beruf_`t' == 8 | beruf_`t' == 9 | beruf_`t' == 5 | beruf_`t' == 7) 
replace beruf_`t'_prestige_wg = . if (beruf_`t' == .k | beruf_`t' == .w | beruf_`t' == . | beruf_`t' == 8 | beruf_`t' == 9 | beruf_`t' == 5 | beruf_`t' == 7) 
}

* Codiere Prestige als 0, wenn arbeitssuchend 
foreach t in erlernt ip15j vRuhe vip15j{
replace beruf_`t'_prestige_tr = 0 if (beruf_`t' == 3 | beruf_`t' == 6)
replace beruf_`t'_prestige_wg = 0 if (beruf_`t' == 3 | beruf_`t' == 6)
}

* Replace prestige value of 0 with missing if occupation is indeterminable or inadequately described
foreach t in erlernt ip15j vRuhe vip15j{
recode beruf_`t'_prestige_tr 0 = . if (beruf_`t' == 4)
recode beruf_`t'_prestige_wg 0 = . if (beruf_`t' == 4)
}

* Specific rules
* a) Learned profession
* Code prestige with 0 if no profession learned (value == 666)
replace beruf_erlernt_prestige_tr = 0 if beruf_erlernt == 666
replace beruf_erlernt_prestige_wg = 0 if beruf_erlernt == 666

* b) Occupation when index person was 15 years old
* Code Prestige with 0 if father unemployed (==3) or in prison (==4)
replace beruf_ip15j_prestige_tr = 0 if (beruf_ip15j_jn == 3 | beruf_ip15j_jn == 4)
replace beruf_ip15j_prestige_wg = 0 if (beruf_ip15j_jn == 3 | beruf_ip15j_jn == 4)
* Code Prestige with missing if father in education (==2), retired (==5) or already deceased (==6)
replace beruf_ip15j_prestige_tr = 0 if (beruf_ip15j_jn == 2 | beruf_ip15j_jn == 5 | beruf_ip15j_jn == 6)
replace beruf_ip15j_prestige_wg = 0 if (beruf_ip15j_jn == 2 | beruf_ip15j_jn == 5 | beruf_ip15j_jn == 6)


* Select maximum from learned profession, profession as IP 15 years old, last profession before retirement (for father)
egen help_tr = rowmax(beruf_erlernt_prestige_tr beruf_ip15j_prestige_tr beruf_vip15j_prestige_tr beruf_vRuhe_prestige_tr) 
replace beruf_prestige_max_tr = help_tr if index == 1001 | index == 1003
drop help_tr

egen help_wg = rowmax(beruf_erlernt_prestige_wg beruf_ip15j_prestige_wg beruf_vip15j_prestige_wg beruf_vRuhe_prestige_wg) 
replace beruf_prestige_max_wg = help_wg if index == 1001 | index == 1003
drop help_wg

* Drop prestige variable for other stages of the life cycle
drop beruf_erlernt_prestige_wg beruf_ip15j_prestige_wg beruf_vip15j_prestige_wg beruf_vRuhe_prestige_wg beruf_erlernt_prestige_tr beruf_ip15j_prestige_tr beruf_vip15j_prestige_tr beruf_vRuhe_prestige_tr beruf_erlernt beruf_ip15j_jn beruf_ip15j beruf_vip15j beruf_vRuhe


**********************************
* Reshape dataset to wide format
**********************************


* Store labels
local vars "geschlecht geburtsjahr geburtsmonat schulabschluss marital_status interview_date berufsausbildung anz_kinder anz_geschwister beruf_prestige_max_tr beruf_prestige_max_wg heiratsjahr heiratsmonat scheidungsjahr todesjahr trennungsjahr lv2a lv2ta schuljahre_o_uni schuljahre_m_uni ausbildungsjahre" 

foreach v of local vars {
        local l`v' : variable label `v'
}

* Reshape to wide format
foreach x of local vars {
rename `x' `x'_
}

local vars_
foreach item of local vars {
    local vars_ `vars_' `item'_
    display "`vars_'"
}

reshape wide `vars_' , i(fid) j(index)

* Label variables
foreach i of numlist 1001/1004 2001/2006 {
 foreach variable of local vars{
		 label variable `variable'_`i' "`l`variable'' for individual `i'"
	 }
}

* Drop variables with only missings
missings dropvars, force 


**********************************
* Order data set
**********************************

aorder

gen d_lv2a = (lv2a_2001==1)
label var d_lv2a "Observation from LVS-2A?"

gen d_lv2ta = (lv2ta_2001==1)
label var d_lv2ta "Observation from LVS-2TA?"

drop lv2a_* lv2ta_*

*** Cross-Sectional Data on index person

gen   ___Cross_Sectional_Data____ = .
gen   ___Index_Person_2001_______ = .
gen   ___Demographics____________ = .

* Demographics

order ___Cross_Sectional_Data____ fid interview_date_2001 d_lv2a d_lv2ta ___Index_Person_2001_______ fid ___Demographics____________ geschlecht_2001 geburtsjahr_2001 geburtsmonat_2001 marital_status_2001 anz_kinder_2001 anz_geschwister_2001, first
label var fid "Family ID"


* Schooling and education

gen   ___Education____________ = .

order ___Education____________ schulabschluss_2001 schuljahre_o_uni_2001 schuljahre_m_uni_2001 ausbildungsjahre_2001, after(anz_geschwister_2001)

* Occupation

gen   ___Occupation____________ = .

order ___Occupation____________  beruf_prestige_max_tr_2001 beruf_prestige_max_wg_2001, after(ausbildungsjahre_2001)


* Relatives

gen ___Relatives_______ = .

gen ___Father__________ = .

gen ___Mother__________ = .

order ___Relatives_______ ___Father__________ *_1001, after(beruf_prestige_max_wg_2001)

order ___Mother__________ *_1002, after(todesjahr_1001)

drop *_1003 *_1004

* Spouses

gen ___Spouses_______ = .

order ___Spouses_______ *_2002 *_2003 *_2004 *_2005 *_2006, after(todesjahr_1002)

compress
save "$widowsghs/processed/LVII_CS_combined_edt.dta", replace

  